package top.lishuoboy.boot24.task.service;

import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

/**
 * @author lishuoboy
 * @date 2022/3/23 14:03
 */
@Slf4j
@Service
public class AsyncService {

    /**
     * 在Java应用中，绝大多数情况下都是通过同步的方式来实现交互处理的；但是在处理与第三方系统交互的时候，容易造成响应迟缓的情况。
     * 之前大部分都是使用多线程来完成此类任务，其实，在Spring 3.x之后，就已经内置了@Async来完美解决这个问题。
     */
    @Async
    @SneakyThrows
    public void sendMsg() {
        log.warn("sendMsg start");
        TimeUnit.SECONDS.sleep(10);  // 模拟任务
        log.warn("sendMsg end");
    }
}
